/**
 * Element.java
 * 
 * @authors: Connor Gordon, Difan Zhao, Kathleen Lan, Patrick Royal
 */
package model;

import java.util.List;


/**
 * This class can represent stocks and their prices,
 * cities and their populations, and much more. Anything
 * with a name, ID, and value will work here.
 * 
 * @author Group 8
 * 
 */
public interface Element {
    
    /**
     * Returns name of element.
     */
    String getName ();

    /**
     * Returns data from 1 to [range].
     * @param range the maximum value of data
     */
    List<Double> getDataRange(int range);

    /**
     * Sets name of element.
     * 
     * @param name new name
     */
    void setName (String name);

    /**
     * Checks to see if the map contains a certain string.  If not,
     * prints an error message.
     * @param type string to be checked
     */
    void specifyData (String type);

    /**
     * Returns ID of element.
     */
    String getID ();

    /**
     * Sets ID of element.
     * 
     * @param id new ID
     */
    void setID (String id);

    /**
     * Returns value of element.
     */
    double getValue ();

    /**
     * Returns list of values for the element.
     */
    List<Double> getValueList ();

    /**
     * Returns the size of the element relative to all
     * other elements.
     */
    double getRelativeSize ();

    /**
     * Set the relative size of the element.
     * 
     * @param p new relative size
     */
    void setRelativeSize (double p);

    /**
     * Resets the list of values for the stock to a given list.
     * @param newList new values
     */
    void setValueList (List<Double> newList);
}
